/**************************************************************************
 * @name: 笔试题伪代码
 * @brief: 利用两个栈模拟队列操作
 * @date:
 * @author: boluzs@163.com
 * @note: 已记录在笔记本中，同时记在文件中方便提交作业
 * @version: 1.0.0
 * @Copyright (c) 2024 by boluzs@163.com, All Rights Reserved.
 **************************************************************************/
int isQueueEmpty(&s1, &s2)
{
    return isEmpty(s1) && isEmpty(s2) ? 1 : 0;
}

void enQueue(&s1, &s2, int x)
{
    // 判断s1是否满了并且s2中是否还有元素尚未弹出
    if (s1->Top == maxSize - 1 && !isEmpty(s2))
        exit(-1);
    // 判断s1是否满了并且s2中是否还有元素尚未弹出
    else if (s1->Top == maxSize - 1 && isEmpty(s2))
    {
        while (!isEmpty(s1))
        {
            int Data = 0;
            pop(s1, &Data);
            push(s2, Data);
        }
    }
    push(s1, x);
}

int deQueue(&s1, &s2)
{
    if (isQueueEmpty(s1, s2)==1)
        exit(-1);
    // 判断s2是否为空，空的话则将s1的元素移到s2中再进行出队
    int temp = 0;
    if (isEmpty(s2))
    {
        while (!isEmpty(s1))
        {
            int Data = 0;
            pop(s1, &Data);
            push(s2, Data);
        }
    }
    pop(s2, &temp);
    return temp;
}
